// EMS运费数据服务
export interface EMSFreightData {
    weight: number;
    weight_text: string;
    prices: {
        '第1区': number;
        '第2区': number;
        '第3区': number;
        '第4区': number;
        '第5区': number;
    };
}

export interface ZoneInfo {
    name: string;
    description: string;
    example: string;
    color: string;
}

// 区域信息
export const zones: ZoneInfo[] = [
    {
        name: '第1区',
        description: '中国、韩国、台湾',
        example: '最优惠价格',
        color: '#67C23A'
    },
    {
        name: '第2区',
        description: '亚洲其他地区',
        example: '价格适中',
        color: '#E6A23C'
    },
    {
        name: '第3区',
        description: '欧洲、大洋洲、加拿大、墨西哥、中近东',
        example: '价格较高',
        color: '#F56C6C'
    },
    {
        name: '第4区',
        description: '美国（包括关岛等海外领土）',
        example: '价格最高',
        color: '#909399'
    },
    {
        name: '第5区',
        description: '中南美（墨西哥除外）、非洲',
        example: '价格较高',
        color: '#9C27B0'
    }
];

// 完整的EMS运费数据（从抓取的数据中获取）
export const emsFreightData: EMSFreightData[] = [
    { weight: 0.5, weight_text: '不超过500g', prices: { '第1区': 1450, '第2区': 1900, '第3区': 3150, '第4区': 3900, '第5区': 3600 } },
    { weight: 0.6, weight_text: '不超过600g', prices: { '第1区': 1600, '第2区': 2150, '第3区': 3400, '第4区': 4180, '第5区': 3900 } },
    { weight: 0.7, weight_text: '不超过700g', prices: { '第1区': 1750, '第2区': 2400, '第3区': 3650, '第4区': 4460, '第5区': 4200 } },
    { weight: 0.8, weight_text: '不超过800g', prices: { '第1区': 1900, '第2区': 2650, '第3区': 3900, '第4区': 4740, '第5区': 4500 } },
    { weight: 0.9, weight_text: '不超过900g', prices: { '第1区': 2050, '第2区': 2900, '第3区': 4150, '第4区': 5020, '第5区': 4800 } },
    { weight: 1.0, weight_text: '不超过1kg', prices: { '第1区': 2200, '第2区': 3150, '第3区': 4400, '第4区': 5300, '第5区': 5100 } },
    { weight: 1.25, weight_text: '不超过1.25kg', prices: { '第1区': 2500, '第2区': 3500, '第3区': 5000, '第4区': 5990, '第5区': 5850 } },
    { weight: 1.5, weight_text: '不超过1.5kg', prices: { '第1区': 2800, '第2区': 3850, '第3区': 5550, '第4区': 6600, '第5区': 6600 } },
    { weight: 1.75, weight_text: '不超过1.75kg', prices: { '第1区': 3100, '第2区': 4200, '第3区': 6150, '第4区': 7290, '第5区': 7350 } },
    { weight: 2.0, weight_text: '不超过2kg', prices: { '第1区': 3400, '第2区': 4550, '第3区': 6700, '第4区': 7900, '第5区': 8100 } },
    { weight: 2.5, weight_text: '不超过2.5kg', prices: { '第1区': 3900, '第2区': 5150, '第3区': 7750, '第4区': 9100, '第5区': 9600 } },
    { weight: 3.0, weight_text: '不超过3kg', prices: { '第1区': 4400, '第2区': 5750, '第3区': 8800, '第4区': 10300, '第5区': 11100 } },
    { weight: 3.5, weight_text: '不超过3.5kg', prices: { '第1区': 4900, '第2区': 6350, '第3区': 9850, '第4区': 11500, '第5区': 12600 } },
    { weight: 4.0, weight_text: '不超过4kg', prices: { '第1区': 5400, '第2区': 6950, '第3区': 10900, '第4区': 12700, '第5区': 14100 } },
    { weight: 4.5, weight_text: '不超过4.5kg', prices: { '第1区': 5900, '第2区': 7550, '第3区': 11950, '第4区': 13900, '第5区': 15600 } },
    { weight: 5.0, weight_text: '不超过5kg', prices: { '第1区': 6400, '第2区': 8150, '第3区': 13000, '第4区': 15100, '第5区': 17100 } },
    { weight: 5.5, weight_text: '不超过5.5kg', prices: { '第1区': 6900, '第2区': 8750, '第3区': 14050, '第4区': 16300, '第5区': 18600 } },
    { weight: 6.0, weight_text: '不超过6kg', prices: { '第1区': 7400, '第2区': 9350, '第3区': 15100, '第4区': 17500, '第5区': 20100 } },
    { weight: 7.0, weight_text: '不超过7kg', prices: { '第1区': 8200, '第2区': 10350, '第3区': 17200, '第4区': 19900, '第5区': 22500 } },
    { weight: 8.0, weight_text: '不超过8kg', prices: { '第1区': 9000, '第2区': 11350, '第3区': 19300, '第4区': 22300, '第5区': 24900 } },
    { weight: 9.0, weight_text: '不超过9kg', prices: { '第1区': 9800, '第2区': 12350, '第3区': 21400, '第4区': 24700, '第5区': 27300 } },
    { weight: 10.0, weight_text: '不超过10kg', prices: { '第1区': 10600, '第2区': 13350, '第3区': 23500, '第4区': 27100, '第5区': 29700 } },
    { weight: 11.0, weight_text: '不超过11kg', prices: { '第1区': 11400, '第2区': 14350, '第3区': 25600, '第4区': 29500, '第5区': 32100 } },
    { weight: 12.0, weight_text: '不超过12kg', prices: { '第1区': 12200, '第2区': 15350, '第3区': 27700, '第4区': 31900, '第5区': 34500 } },
    { weight: 13.0, weight_text: '不超过13kg', prices: { '第1区': 13000, '第2区': 16350, '第3区': 29800, '第4区': 34300, '第5区': 36900 } },
    { weight: 14.0, weight_text: '不超过14kg', prices: { '第1区': 13800, '第2区': 17350, '第3区': 31900, '第4区': 36700, '第5区': 39300 } },
    { weight: 15.0, weight_text: '不超过15kg', prices: { '第1区': 14600, '第2区': 18350, '第3区': 34000, '第4区': 39100, '第5区': 41700 } },
    { weight: 16.0, weight_text: '不超过16kg', prices: { '第1区': 15400, '第2区': 19350, '第3区': 36100, '第4区': 41500, '第5区': 44100 } },
    { weight: 17.0, weight_text: '不超过17kg', prices: { '第1区': 16200, '第2区': 20350, '第3区': 38200, '第4区': 43900, '第5区': 46500 } },
    { weight: 18.0, weight_text: '不超过18kg', prices: { '第1区': 17000, '第2区': 21350, '第3区': 40300, '第4区': 46300, '第5区': 48900 } },
    { weight: 19.0, weight_text: '不超过19kg', prices: { '第1区': 17800, '第2区': 22350, '第3区': 42400, '第4区': 48700, '第5区': 51300 } },
    { weight: 20.0, weight_text: '不超过20kg', prices: { '第1区': 18600, '第2区': 23350, '第3区': 44500, '第4区': 51100, '第5区': 53700 } },
    { weight: 21.0, weight_text: '不超过21kg', prices: { '第1区': 19400, '第2区': 24350, '第3区': 46600, '第4区': 53500, '第5区': 56100 } },
    { weight: 22.0, weight_text: '不超过22kg', prices: { '第1区': 20200, '第2区': 25350, '第3区': 48700, '第4区': 55900, '第5区': 58500 } },
    { weight: 23.0, weight_text: '不超过23kg', prices: { '第1区': 21000, '第2区': 26350, '第3区': 50800, '第4区': 58300, '第5区': 60900 } },
    { weight: 24.0, weight_text: '不超过24kg', prices: { '第1区': 21800, '第2区': 27350, '第3区': 52900, '第4区': 60700, '第5区': 63300 } },
    { weight: 25.0, weight_text: '不超过25kg', prices: { '第1区': 22600, '第2区': 28350, '第3区': 55000, '第4区': 63100, '第5区': 65700 } },
    { weight: 26.0, weight_text: '不超过26kg', prices: { '第1区': 23400, '第2区': 29350, '第3区': 57100, '第4区': 65500, '第5区': 68100 } },
    { weight: 27.0, weight_text: '不超过27kg', prices: { '第1区': 24200, '第2区': 30350, '第3区': 59200, '第4区': 67900, '第5区': 70500 } },
    { weight: 28.0, weight_text: '不超过28kg', prices: { '第1区': 25000, '第2区': 31350, '第3区': 61300, '第4区': 70300, '第5区': 72900 } },
    { weight: 29.0, weight_text: '不超过29kg', prices: { '第1区': 25800, '第2区': 32350, '第3区': 63400, '第4区': 72700, '第5区': 75300 } },
    { weight: 30.0, weight_text: '不超过30kg', prices: { '第1区': 26600, '第2区': 33350, '第3区': 65500, '第4区': 75100, '第5区': 77700 } }
];

// 获取EMS运费数据
export const getEMSFreightData = (): EMSFreightData[] => {
    return emsFreightData;
};

// 获取区域信息
export const getZones = (): ZoneInfo[] => {
    return zones;
};

// 根据重量获取运费
export const getFreightByWeight = (weight: number, zone: string): number | null => {
    const data = emsFreightData.find(item => item.weight >= weight);
    if (data && data.prices[zone as keyof typeof data.prices]) {
        return data.prices[zone as keyof typeof data.prices];
    }
    return null;
};

// 获取区域价格统计
export const getZonePriceStats = (zone: string) => {
    const prices = emsFreightData
        .map(item => item.prices[zone as keyof typeof item.prices])
        .filter(price => price !== undefined);

    if (prices.length === 0) return null;

    return {
        min: Math.min(...prices),
        max: Math.max(...prices),
        avg: Math.round(prices.reduce((sum, price) => sum + price, 0) / prices.length)
    };
};

// 获取重量分类统计
export const getWeightCategoryStats = () => {
    const light = emsFreightData.filter(item => item.weight <= 1).length;
    const medium = emsFreightData.filter(item => item.weight > 1 && item.weight <= 5).length;
    const heavy = emsFreightData.filter(item => item.weight > 5 && item.weight <= 15).length;
    const superHeavy = emsFreightData.filter(item => item.weight > 15).length;

    return {
        light,
        medium,
        heavy,
        superHeavy,
        total: emsFreightData.length
    };
};

// 搜索运费数据
export const searchFreightData = (
    data: EMSFreightData[],
    zone?: string,
    weightRange?: string,
    searchText?: string
): EMSFreightData[] => {
    let filtered = [...data];

    // 按区域筛选
    if (zone) {
        filtered = filtered.filter(item => item.prices[zone as keyof typeof item.prices] !== undefined);
    }

    // 按重量范围筛选
    if (weightRange) {
        filtered = filtered.filter(item => {
            const weight = item.weight;
            switch (weightRange) {
                case 'light': return weight <= 1;
                case 'medium': return weight > 1 && weight <= 5;
                case 'heavy': return weight > 5 && weight <= 15;
                case 'super': return weight > 15;
                default: return true;
            }
        });
    }

    // 按重量搜索
    if (searchText) {
        filtered = filtered.filter(item =>
            item.weight_text.toLowerCase().includes(searchText.toLowerCase())
        );
    }

    return filtered;
};
